package ${basePackage}.core.job;

import com.alibaba.fastjson.JSON;
import ${basePackage}.core.constants.Constants;

import java.util.*;

/**
 * JOB入参
 */
public class JobParam extends HashMap<String, Object> {

    // JOB或分片ID
    private static final String KEY_ID = "id";

    // 业务时间
    private static final String KEY_BUSINESS_TIME = "businessTime";

    // 分片索引
    private static final String KEY_SNIPPET_INDEX = "snippetIndex";

    // 触发方式
    private static final String KEY_TRIGGER_TYPE = "triggerType";

    // 业务数据
    private static final String KEY_RUNTIME_DATA = "runtimeData";

    public void setId (Integer id) {
        this.put(KEY_ID, id);
    }

    public Integer getId () {
        return (Integer) this.get(KEY_ID);
    }

    public void setBusinessTime(Date date) {
        this.put(KEY_BUSINESS_TIME, date);
    }

    public <T> List<T> getRuntimeData(Class<T> clazz) {
        return JSON.parseArray((String)this.get(KEY_RUNTIME_DATA), clazz);
    }

    public void setSnippetIndex (Integer index) {
        this.put(KEY_SNIPPET_INDEX, index);
    }

    public Integer getSnippetIndex () {
        Object indexObject = this.get(KEY_SNIPPET_INDEX);
        if (indexObject == null) {
            return null;
        }
        return (Integer) indexObject;
    }

    public void setTriggerType (String triggerType) {
        this.put(KEY_TRIGGER_TYPE, triggerType);
    }

    public String getTriggerType () {
        return (String) this.get(KEY_TRIGGER_TYPE);
    }

    public Date getBusinessTime() {
        return (Date) this.get(KEY_BUSINESS_TIME);
    }

    public void setRuntimeData(String runtimeData) {
        this.put(KEY_RUNTIME_DATA, runtimeData);
    }
}
